Trait繼承 您所在的位置:网站首页 rust trait 继承 Trait繼承

Trait繼承

2024-06-22 21:52| 来源: 网络整理| 查看: 265

Trait繼承

通過讓某個類型去實現某個Trait,使得該類型具備該Trait的功能,是組合(composite)的方式。

經常和組合放在一起討論的是繼承(inheritance)。繼承通常用來描述屬於同種性質的父子關係(is a),而組合用來描述具有某功能(has a)。

例如,支持繼承的語言,可以讓轎車類型(Car)繼承交通工具類型(Vehicle),表明轎車是一種(is a)交通工具,它們是同一種性質的東西。而如果是支持組合的語言,可以定義可駕駛功能Drivable,然後將Driveable組合到轎車類型、輪船類型、飛機類型、卡車類型、玩具車類型,等等,表明這些類型具有(has a)駕駛功能。

Rust除了支持組合,還支持繼承。但Rust只支持Trait之間的繼承,比如Trait A繼承Trait B。實現繼承的方式很簡單,在定義Trait A時使用冒號加上Trait B即可。

例如:

#![allow(unused)] fn main() { trait B{} trait A: B{} }

如果Trait A繼承Trait B,當類型C想要實現Trait A時,將要求同時也要去實現B。

#![allow(unused)] fn main() { trait B{ fn func_in_b(&self); } // Trait A繼承Trait B trait A: B{ fn func_in_a(&self); } struct C{} // C實現Trait A impl A for C { fn func_in_a(&self){ println!("impl: func_in_a"); } } // C還要實現Trait B impl B for C { fn func_in_b(&self){ println!("impl: func_in_b"); } } }

現在,C的實例對象將可以調用func_in_a()和func_in_b():

fn main(){ let c = C{}; c.func_in_a(); c.func_in_b(); }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有